package com.cino.demos.service;

import com.cino.demos.entity.mysqlJson.UserJson;
import com.cino.demos.entity.mysqlJson.UserJsonVO;
import com.cino.demos.entity.mysqlJson.UserOrgVO;
import com.cino.demos.mapper.mysqlJson.UserJsonMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;

@Service
public class MysqlJsonService {

    @Autowired
    private UserJsonMapper userJsonMapper;

//    public MysqlJson findByIdAndChineseName(Long id, String chineseName) {
//        QueryWrapper<MysqlJson> wrapper = new QueryWrapper<>();
//        // 关键点1：显式指定 SELECT 字段并处理 JSON 解析
//        wrapper.select(
//                        "id",
//                        "age",
//                        "JSON_UNQUOTE(JSON_EXTRACT(name, '$.jp')) as name", // 提取 jp 名称并别名映射
//                        "sex"
//                )
//                // 关键点2：条件使用 JSON_UNQUOTE 或 ->>
//                .eq("id", id)
//                .apply("JSON_UNQUOTE(JSON_EXTRACT(name, '$.zh')) = {0}", chineseName); // 或 name->>'$.zh'
//        return mysqlJsonMapper.selectOne(wrapper);
//    }

    public void insert() {
        UserJson user = new UserJson();
        user.setName(new HashMap<String, Object>() {{
            put("zh", "张四");
            put("en", "John");
        }});
        userJsonMapper.insert(user);
    }

    public UserJsonVO select(){
        UserJson user = userJsonMapper.selectById(8L);
        String userName_zh = (String) user.getName().get("zh");//直接取出来是Object的形式
        String userName_en = (String) user.getName().get("en");
        UserJsonVO userJsonVO = new UserJsonVO();
        userJsonVO.setUserNameEn(userName_en);
        userJsonVO.setUserNameZh(userName_zh);
        userJsonVO.setId(user.getId());
        return userJsonVO;
    }

    public void update(){
        String name = "yishion";
        UserJson user = userJsonMapper.selectById(8L);
        user.getName().put("en", name); // 修改 JSON 字段中的英文名
        userJsonMapper.updateById(user); // 自动更新整个 JSON 字段
    }

    public void delete(){
        String name = "yishion";
        UserJson user = userJsonMapper.selectById(8L);
        user.getName().remove("en"); // 修改 JSON 字段中的英文名
        userJsonMapper.updateById(user); // 自动更新整个 JSON 字段
    }


}